package com.itany.corejava.code09_集合.list集合;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月20日 17:14
 */

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 定义一个用户类User
 * 属性：id、name、age
 * 实现以下功能：
 *  1.添加用户信息，提示用户输入用户的信息，存储到ArrayList中去
 *  2.查询所有用户信息，输出集合中所有用户的信息
 *  3.根据编号查询指定用户信息
 *  4.根据编号修改指定用户信息
 *  5.根据编号删除指定用户信息
 *
 *  如：在一个测试类中运行代码:弹出:1.添加  2.查询所有  3.根据编号查询 4.修改 5.删除  6.退出
 *
 */
public class Test09_练习 {
    private static Scanner sc=new Scanner(System.in);
    private static List<User> usersList=new ArrayList<>();
    public static void main(String[] args) {
        showMenu();


    }
    public static void showMenu(){
        System.out.println("----------------------欢迎来到用户管理系统------------------------");
        System.out.print("请选择对应功能(1.添加  2.查询所有  3.根据编号查询 4.修改 5.删除  6.退出)");
        int choice=sc.nextInt();
        switch (choice){
            case 1:
                addUser();
                break;
            case 2:
                queryAll();
                break;
            case 3:
                queryUserById();
                break;
            case 4:
                modifyUserById();
                break;
            case 5:
                removeUserById();
                break;
            case 6:
                break;
            default:
                System.out.println("您输入有误，请重新输入");
                showMenu();
        }
    }

    /**
     * 添加用户
     */
    public static void addUser(){
        System.out.println("------------------添加用户信息:----------------------");
        User user=new User();
        System.out.print("请输入用户的编号:");
        user.setId(sc.nextInt());
        System.out.print("请输入用户的姓名:");
        user.setName(sc.next());
        System.out.print("请输入用户的年龄:");
        user.setAge(sc.nextInt());
        usersList.add(user);
        showMenu();

    }

    /**
     * 查询所有用户信息
     */
    public static void queryAll(){
        System.out.println("----------------显示用户列表----------------");
        System.out.println("编号\t姓名\t年龄");
        for(User user:usersList){
            System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getAge());
        }
        showMenu();
    }

    /**
     * 根据编号查找用户
     */
    public static void queryUserById(){
        System.out.println("---------------根据用户编号查询用户信息-----------------");
        System.out.println("请输入需要查询的用户编号:");
        int id=sc.nextInt();
        User user=isUserExistById(id);//根据id查找是否存在该用户
        if(user==null){
            System.out.println("不好意思，没有该用户的信息！！！");
        }else{
            System.out.println("编号\t姓名\t年龄");
            System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getAge());
        }
        showMenu();
    }

    /**
     * 根据编号查询用户是否存在
     * @param id
     * @return
     */
    public static User isUserExistById(int id){
        for(User user:usersList){
            if(user.getId()==id){
                return user;
            }
        }
        return null;
    }

    /**
     * 根据id修改用户信息
     */
    public static void modifyUserById(){
        System.out.println("---------------修改用户信息-----------------");
        System.out.println("请输入需要修改的用户编号:");
        int id=sc.nextInt();
        User user=isUserExistById(id);//根据id查找是否存在该用户
        if(user==null){
            System.out.println("不好意思，没有该用户的信息！！！");
        }else{
            System.out.print("请输入用户名:");
            user.setName(sc.next());
            System.out.print("请输入用户年龄:");
            user.setAge(sc.nextInt());
            System.out.println("修改成功!");
        }
        showMenu();
    }

    /**
     * 根据用户编号删除指定用户
     */
    public static void removeUserById(){
        System.out.println("--------------------删除用户信息---------------------");
        System.out.print("请输入您要删除的用户编号:");
        int id=sc.nextInt();
        User user=isUserExistById(id);
        if(user==null){
            System.out.println("不好意思，没有该用户！！！");
        }else{
            usersList.remove(user);
            System.out.println("删除成功!");
        }
        showMenu();
    }
}
